package com.cn.wanxi.service.impl;

import com.cn.wanxi.dao.CompanyDao;
import com.cn.wanxi.model.CompanyModel;
import com.cn.wanxi.service.ICompanyService;
import com.cn.wanxi.util.IO;
import com.cn.wanxi.util.Path;
import com.cn.wanxi.util.PathEnum;

import java.io.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * 第三阶段接口多态实现
 * 第二阶段所有数据来源于dao层
 * 第三阶段所有数据来源与记事本
 * 1.文件------创建文件
 * 2.记录数据----写入数据
 * 3.读取数据
 * 4.封装数据CompanyModel
 */
public class CompanyServiceImpl implements ICompanyService {
    @Override
    public CompanyModel getCompanyModel() {
        CompanyModel companyModel = new CompanyModel();
//        1.创建文件
//        File file=new File("");

//        必须有返回值
//        创建文件或者文件夹的时候，发现这个方法应该会有很多地方都需要用它，
//        发现创建文件或者文件夹的代码不属于当前的类？
        File file = IO.createFile(PathEnum.PATH.getPath(), PathEnum.FILE_NAME_COMPANYU.getPath());
//       2. 写入数据
//        封装写入的数据
        List<String> array = getDaoData();
        IO.write(array, file);
//        找到记事本进行读取
//        File file=new File("");
//        数据来源于记事本
//        3.读取的数据来源与文件
        String result = IO.readNote(file);
//        4.封装数据CompanyModel
//        不相干的代码应该单独提取出来？
        companyModel = setCompanyModel(result);
        return companyModel;
    }

    private CompanyModel setCompanyModel(String result) {
        CompanyModel companyModel = new CompanyModel();
        String[] results = result.split(PathEnum.SPLIT.getPath());
        companyModel.setLogo(results[0]);//值来源于数据实现层
        companyModel.setPhone(results[1]);
        companyModel.setNet(results[2]);
        companyModel.setAddress(results[3]);
        companyModel.setEmail(results[4]);
        companyModel.setLinePhone(results[5]);
        companyModel.setVersion(results[6]);
        return companyModel;
    }


    public static void main(String[] args) {
        new CompanyServiceImpl().getCompanyModel();
    }

    private List<String> getDaoData() {
        CompanyDao companyDao = new CompanyDao();
        List<String> list = new ArrayList<>();
        list.add(companyDao.getLogo());
        list.add(companyDao.getPhone());
        list.add(companyDao.getNet());
        list.add(companyDao.getAddress());
        list.add(companyDao.getEmail());
        list.add(companyDao.getLinePhone());
        list.add(companyDao.getVersion());
//        String[] array = {companyDao.getLogo(), companyDao.getPhone()};
        return list;
    }

//    private void writeNote(File file) {
//    }

//    private File createNote(String path, String fileName) {
//
//    }
}
